<head>
  <style> body { margin: 0; } </style>

  <script type="importmap">{ "imports": {
    "react": "https://esm.sh/react",
    "react-dom": "https://esm.sh/react-dom/client"
  }}</script>

<!--  <script type="module">import * as React from 'react'; window.React = React;</script>-->
<!--  <script src="../../src/packages/react-force-graph-3d/dist/react-force-graph-3d.js" defer></script>-->
</head>

<body>
  <div id="graph"></div>

  <script src="//unpkg.com/@babel/standalone"></script>
  <script type="text/jsx" data-type="module">
    import ForceGraph3D from 'https://esm.sh/react-force-graph-3d?external=react';
    import React from 'react';
    import { createRoot } from 'react-dom';
    import SpriteText from "https://esm.sh/three-spritetext";

    fetch('../datasets/forcegraph-dependencies.json').then(res => res.json()).then(depData => {
      const elem = document.getElementById('graph');

      createRoot(elem).render(
        <ForceGraph3D
          graphData={depData}
          dagMode="lr"
          dagLevelDistance={60}
          nodeId="package"
          nodeAutoColorBy="user"
          linkDirectionalParticles={2}
          linkDirectionalParticleWidth={0.5}
          onNodeClick={node => window.open(`https://github.com/${node.user}/${node.package}`, '_blank')}
          nodeThreeObject={node => {
            const sprite = new SpriteText(node.package);
            sprite.color = node.color;
            sprite.textHeight = 5;
            return sprite;
          }}
        />
      );
    });
  </script>
</body>